package araujoCoronelVillamayor.plantasVsZombies.appModelsArena

import java.util.ArrayList
import org.uqbar.commons.utils.Observable
import araujoCoronelVillamayor.plantasVsZombies.domain.FactoryZombies
import araujoCoronelVillamayor.plantasVsZombies.domain.Zombie
import java.util.List

@Observable
class AlmanaqueAppModel {
@Property FactoryZombies factoryZombies
@Property ArrayList<Zombie> tiposZombies
@Property SesionAppModel sesionAppModel
@Property String zombieBuscado
@Property List<Zombie> resultadoBusqueda

new(SesionAppModel sesionAppModelParametro) {
sesionAppModel = sesionAppModelParametro

//Deberían generarse aquí los zombies, no en el "SesionAppModel"
//porque si se usan los mismos zombies para el almanaque,
//una vez que son eliminados por las plantas, desaparecen
tiposZombies = new ArrayList<Zombie>
factoryZombies = FactoryZombies.getInstance
tiposZombies.add(factoryZombies.crearColinBlunstone())
tiposZombies.add(factoryZombies.crearColinBlunstone())
tiposZombies.add(factoryZombies.crearColinBlunstone())
tiposZombies.add(factoryZombies.crearColinBlunstone())
tiposZombies.add(factoryZombies.crearCranberrie())
tiposZombies.add(factoryZombies.crearCranberrie())
tiposZombies.add(factoryZombies.crearCranberrie())
tiposZombies.add(factoryZombies.crearCranberrie())
//tiposZombies = sesionAppModel.tiposZombies
}

def buscar() {
resultadoBusqueda = tiposZombies.filter[Zombie|search(zombieBuscado, Zombie.nombre)].toList
}

def limpiar(){
zombieBuscado = ""
buscar
}

/**
* Busca los zombies que coincidan con los datos recibidos. Tanto ataque, defensa como nombre pueden ser nulos,
* en ese caso no se filtra por ese atributo.
*/

def search(Object expectedValue, Object realValue) {
if (expectedValue == null) {
return true
}
if (realValue == null) {
return false
}
realValue.toString.toLowerCase.contains(expectedValue.toString.toLowerCase)
}
}

//package araujoCoronelVillamayor.plantasVsZombies.appModelsArena
//
//import java.util.ArrayList
//import org.uqbar.commons.utils.Observable
//import araujoCoronelVillamayor.plantasVsZombies.domain.FactoryZombies
//import araujoCoronelVillamayor.plantasVsZombies.domain.Zombie
//import java.io.Serializable
//
//@Observable
//class AlmanaqueAppModel implements Serializable {
//	@Property FactoryZombies factoryZombies
//	@Property ArrayList<Zombie> tiposZombies
//	@Property SesionAppModel sesionAppModel
//		
//	new(SesionAppModel sesionAppModelParametro) {
//		sesionAppModel = sesionAppModelParametro
//		
//		//Deberían generarse aquí los zombies, no en el "SesionAppModel"
//		//porque si se usan los mismos zombies para el almanaque,
//		//una vez que son eliminados por las plantas, desaparecen
//		tiposZombies = new ArrayList<Zombie>
//		factoryZombies = FactoryZombies.getInstance
//		tiposZombies.add(factoryZombies.crearColinBlunstone())
//		tiposZombies.add(factoryZombies.crearCranberrie())
//		//tiposZombies = sesionAppModel.tiposZombies
//	}
//}